package com.zhao.wechat.domain;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;
import java.util.List;


/**
 * 门户服务响应前端统一数据格式封装。
 *
 * @Auther: yinguibing
 * @Date: 2020-07-13 09:49
 * @Description: 统一响应处理。
 */
@Slf4j
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class ApiResponse implements Serializable {

    private static final long serialVersionUID = -5566698145754452496L;

    /**
     * 业务处理结果
     **/
    private JSONObject data;

    /**
     * 解析今日百度天气
     *
     * @param objectClass
     * @param <T>
     * @return
     */
    public static <T> T parseBaiduNowData(String sourceData, Class<T> objectClass) {
        if (null != objectClass) {
            JSONObject jsonObject = JSONObject.parseObject(sourceData).getJSONObject("result").getJSONObject("now");
            return JSON.parseObject(JSON.toJSONString(jsonObject), objectClass);
        } else {
            return null;
        }
    }

    /**
     * 解析今日详细百度天气
     *
     * @param objectClass
     * @param <T>
     * @return
     */
    public static <T> List<T> parseBaiduForecastsData(String sourceData, Class<T> objectClass) {
        if (null != sourceData) {
            JSONArray jsonArray = JSONObject.parseObject(sourceData).getJSONObject("result").getJSONArray("forecasts");
            return JSON.parseArray(JSON.toJSONString(jsonArray), objectClass);
        } else {
            return null;
        }
    }


    /**
     * 解析天行的数据
     *
     * @param objectClass
     * @param <T>
     * @return
     */
    public static <T> List<T> parseTianData(String sourceData, Class<T> objectClass) {
        if (null != sourceData) {
            JSONArray newslist = JSONObject.parseObject(sourceData).getJSONArray("newslist");
            return JSON.parseArray(JSON.toJSONString(newslist), objectClass);
        } else {
            return null;
        }
    }


}
